<template>
  <scroll-page>
    <view class="description-page">
      <!-- 在线医生 -->
      <view class="doctor-online">
        <image src="/static/uploads/doctor-avatar-2.png" class="doctor-avatar" />
        <view class="doctor-info">
          <view class="name">在线医生</view>
          <view class="message">
            请描述你的疾病或症状、是否用药、就诊经历，需要我听过什么样的帮助
          </view>
          <view class="tips">
            <text class="iconfont icon-shield"></text>
            内容仅医生可见
          </view>
        </view>
      </view>
      <!-- 患者信息 -->
      <view class="patient-info">
        <view class="description">
          <uni-easyinput v-model="illnessInfo.illnessDesc" type="textarea" :input-border="false"
            placeholder-style="font-size: 30rpx; color: #979797" placeholder="请详细描述您的病情,病情描述不能为空" />
        </view>

        <view class="title">本次患病多久了？</view>
        <view class="tags">
          <text class="tag" v-for="(item, index) in illnessTimes" :key="item.value"
            :class="{ active: item.value === illnessInfo.illnessTime }" @click="onTimeTagClick(item.value)">{{
              item.text }}</text>
        </view>

        <view class="title">此次病情是否去医院就诊过？</view>
        <view class="tags">
          <text v-for="item in consultFlags" :key="item.value" class="tag"
            :class="{ active: item.value === illnessInfo.consultFlag }" @click="onFlagTagClick(item.value)">{{
              item.text }}</text>
        </view>
      </view>
      <!-- 上传图片 -->
      <view class="patient-picture">
        <uni-file-picker :auto-upload="false" title="上传病情相关图片 (仅医生可见)" limit="8"
          :image-styles="{ width: '160rpx', height: '160rpx' }" file-extname="png,jpg,gif,webp" @select="onSelectImg"
          v-model="illnessInfo.pictures" />
      </view>
    </view>
    <!-- 下一步操作 -->
    <view class="next-step">
      <button class="uni-button" :disabled="!nextInput" @click="nextStep">下一步</button>
    </view>
  </scroll-page>
</template>

<style lang="scss">
@import './index.scss';
</style>

<script lang="ts" setup>
import { ref, computed } from 'vue';
import type { Image } from '@/types/consult'
import { uploadImgApi } from '@/apis/consult';
import { useConsultStore } from '@/stores/consult';


// 1. 病情描述数据
const illnessInfo = ref({
  illnessDesc: '',
  illnessTime: 1,
  consultFlag: 0,
  pictures: [] as Image[]
})
// 2. 患病时长
const illnessTimes = [
  { value: 1, text: '一周内' },
  { value: 2, text: '一月内' },
  { value: 3, text: '半年内' },
  { value: 4, text: '半年以上' },
]
const onTimeTagClick = (value: number) => {
  illnessInfo.value.illnessTime = value
}

// 3. 是否就诊
const consultFlags = [
  { value: 1, text: '就诊过' },
  { value: 0, text: '没有就诊过' },
]

const onFlagTagClick = (value: number) => {
  // 记录用户选择的数据
  illnessInfo.value.consultFlag = value
}

// 4.上传图片
const onSelectImg = async (e: any) => {
  if (!e.tempFilePaths[0]) return uni.showToast({ title: '请选择要上传的文件', icon: 'none' })
  const res = await uploadImgApi(e.tempFilePaths[0])
  illnessInfo.value.pictures.push(res)
  // console.log(res);
}
// 5. 控制下一步是否可用
const nextInput = computed(() => {
  return illnessInfo.value.illnessDesc.trim() !== ""
})

// 6.数据回显
const store = useConsultStore()
if (store.illnessInfo.illnessDesc) {
  uni.showModal({
    title: '温馨提示',
    content: '是否恢复之前填写的病情信息？',
    confirmText: '确认',
    confirmColor: '#16C2A3',
    cancelColor: '#848484',
    success(res) {
      if (res.confirm) illnessInfo.value = store.illnessInfo
    },
  });
}
// 7.下一步
// 定义接收类型
const props = defineProps<{
  type: string
  illnessType: string
  depId: string
}>()
const nextStep = () => {
  // 7.1 把数据存储到仓库
  store.type = props.type
  store.illnessType = props.illnessType
  store.depId = props.depId
  store.illnessInfo = illnessInfo.value
  // 7.2 跳转到选择患者页面
  uni.navigateTo({
    url: '/subpkg_archive/list/index?type=consult',
  })
}


</script>